草庐IT

C++ CUDA 指向成员的指针

全部标签

c# - 将覆盖的成员更改为异步

我正在覆盖基类库中的一个方法。但是,在我重写的实现中,我使用的是新的HttpClient,它全部基于异步方法。因此,我必须将我的方法标记为异步,这意味着我需要将方法的返回参数从字符串更改为任务。然而,编译器给出了一个错误:“返回类型必须是‘字符串’才能匹配覆盖的成员……”publicclassBaseClass{publicvirtualstringGetName(){...}}publicclassMyClass:BaseClass{publicoverrideasyncTaskGetName(){HttpClienthttpClient=newHttpClient();varres

c# - C# 垃圾收集器如何找到唯一引用是内部指针的对象?

据我所知,在C#中,ref和out参数是通过仅传递相关值的原始地址来传递的。该地址可以是指向数组中元素或对象中字段的内部指针。如果发生垃圾回收,可能仅对某个对象的引用是通过这些内部指针之一进行的,如:usingSystem;publicclassFoo{publicintfield;publicstaticvoidIncrement(refintx){System.GC.Collect();x=x+1;Console.WriteLine(x);}publicstaticvoidMain(){Increment(refnewFoo().field);}}在那种情况下,GC需要找到对象的开

c# - 在不标记成员的情况下使用 ProtoBuf.NET 进行序列化

我在某处读到ProtoBuf.NET作者的评论:Thereareoptionstoautomaticallyinferthenumbers,butthatisbrittleandnotrecommended.Onlyusethisifyouknowyouneverneedtoaddmoremembers(itordersthemalphabetically,soaddinganewAardvarkCountwillbreakeverything).这正是我感兴趣的那种情况:)我有一些类似于map-reduce场景的东西,我想使用ProtocolBuffer(例如map-reduce的“

c# - 为什么 C# 编译器重载解析算法将具有相同签名的静态成员和实例成员视为相等?

让我们有两个签名相同的成员,但一个是静态的而另一个不是:classFoo{publicvoidTest(){Console.WriteLine("instance");}publicstaticvoidTest(){Console.WriteLine("static");}}但是这样的代码生成会带来编译错误:Type'Foo'alreadydefinesamembercalled'Test'withthesameparametertypes但为什么呢?让我们编译成功,然后:Foo.Test()应该输出“static”newFoo().Test();应该输出“instance”不能调用静

c# - 将成员委托(delegate)给经典函数有更多优点或缺点?

classmy_class{publicintadd_1(inta,intb){returna+b;}publicfuncadd_2=(a,b)=>{returna+b;}}add_1是一个函数,而add_2是一个委托(delegate)。然而,在这种情况下,委托(delegate)可以扮演类似的角色。由于先例和语言的设计,C#方法的默认选择应该是函数。然而,这两种方法各有利弊,所以我列出了一份list。这两种方法还有更多优点或缺点吗?传统方法的优势。更传统函数的外部用户看到命名参数-对于add_2语法arg_n和类型通常没有足够的信息。与intellisense配合使用效果更好-ty

c# - 无法使用实例引用访问成员 'object.Equals(object, object)';用类型名称限定它

当我在C#中使用以下代码时...inttotalValue=0;inttotal=0;totalValue=int.Parse(Session["price"].ToString())*int.Parse(Session["day"].ToString());//ThislinecausestheerrortotalValue+=Session["IsChauffeurUsed"].ToString().Equals("Yes",StringComparer.CurrentCultureIgnoreCase)?80:0;...我收到此错误:Member'object.Equals(ob

c# - 在 PropertyGrid 中编辑枚举成员的显示名称

我有一个属性网格,我正在使用它让用户能够为我的应用程序中使用的任何插件配置对象。我希望能够告诉编写插件的开发人员为其成员使用ComponentModel属性,如下所示:[CategoryAttribute("OnScreenDisplaySettings"),DescriptionAttribute("Whetherornottoshowthesessiontimer."),DisplayName("ShowSessionTimer")]publicboolShowTimer{get;set;}这很好用。现在我希望枚举的成员也能够被编辑。即publicenumResolution_:b

c# - 如何使用 JSON.NET 序列化静态或 const 成员变量?

我无法在任何地方找到这个问题的答案,但是当我尝试使用静态或常量成员变量序列化结构或类时,默认情况下它们不会序列化。如果我尝试通过设置MemberSerialization.OptIn强制序列化,我会收到错误。例如[JsonObject(MemberSerialization.OptIn)]publicclassTest{[JsonProperty]publicintx=1;[JsonProperty]publicstaticinty=2;}如果我尝试使用以下方法序列化此类:Testt=newTest();strings=JsonConvert.SerializeObject(t);我收

c# - 为什么我只能从静态函数访问静态成员?

我在类中有一个静态函数。每当我尝试使用非静态数据成员时,我都会遇到以下编译错误。非静态字段、方法或属性成员需要对象引用为什么会这样? 最佳答案 一个非静态成员属于一个实例。如果不以某种方式解决您正在谈论的类的哪个实例,那将毫无意义。在静态上下文中,您没有实例,这就是为什么您不能在不显式提及对象引用的情况下访问非静态成员的原因。事实上,您可以通过显式指定对象引用来访问静态上下文中的非静态成员:classHelloWorld{inti;publicHelloWorld(inti){this.i=i;}publicstaticvoidPr

c# - 在与基类成员同名的派生类成员中使用 new 关键字的好处

C#语言规范说,如果我继承了一个类,并且基类和派生类具有相同的命名成员和相同的签名,那么我必须使用new关键字来隐藏基类成员(还有一种方法是在基类和派生类成员中使用virtual和override关键字)。但在实践中我发现,如果派生类具有相同的命名成员,则派生类会自动隐藏派生成员。那么同名派生类成员中的新关键字的主要好处和问题是什么? 最佳答案 如您所述,不需要新的。它是可选的,如果您不使用它,您会收到警告。乍一看这是一个奇怪的设计决定,您是完全正确的。此设计决策的目的是帮助缓解称为“脆弱基类”问题的一类问题。这是该问题的一个版本: